package com.xzq.erp.service;

import com.xzq.erp.domain.dto.PageDTO;
import com.xzq.erp.domain.dto.ProductDTO;
import com.xzq.erp.domain.po.Product;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xzq.erp.domain.query.ProductPageQuery;
import com.xzq.erp.domain.vo.IdAndNameVO;
import com.xzq.erp.domain.vo.ProductVO;
import jakarta.validation.constraints.NotEmpty;

import java.util.List;

/**
 * <p>
 * 商品表 服务类
 * </p>
 *
 * @author xzq
 * @since 2025-05-26
 */
public interface IProductService extends IService<Product> {

    /**
     * 商品列表
     * @param pageQuery
     * @return
     */
    PageDTO<ProductVO> getProductList(ProductPageQuery pageQuery);

    /**
     * 添加商品
     * @param productDTO
     */
    void addProduct(ProductDTO productDTO);

    /**
     * 商品详情
     * @param id
     * @return
     */
    ProductVO getProductById(Long id);

    /**
     * 修改商品
     * @param productDTO
     */
    void updateProduct(ProductDTO productDTO);

    /**
     * 批量删除商品
     * @param ids
     */
    void deleteProducts(@NotEmpty List<Long> ids);

    /**
     * 修改商品状态
     * @param id
     * @param status
     */
    void updateProductStatus(Long id, Integer status);

    /**
     * 获取所有商品
     * @return
     */
    List<ProductVO> getAllProducts();

    /**
     *  根据名称查询商品
     * @param name
     * @return
     */
    List<IdAndNameVO> getProductsByName(String name);
}
